﻿// 504 快速集合.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <memory.h>


using namespace std;
/*
* http://oj.daimayuan.top/course/22/problem/648
* 
* 
数轴上有 n
 个人，他们要选一个地点集合。第 i
 个人初始在位置 ai
 上，他的移速最大是 bi
 单位/秒，请问最少需要花费多少秒，这 n
 个人可以在某一个点集合。

输入格式
输入第一行一个数 n
。

接下来 n
 行每行两个整数 ai，bi
。

输出格式
输出一个数表示答案。相对误差或绝对误差在 10−6内即为正确。

样例输入
2
1 2
5 2
样例输出
1.0000000000
数据规模
对于 100%
 的数据，保证 1≤n≤100000,1≤ai,bi≤100000
*/

const int N = 100010;

int a[N], b[N];
double seg[N][2];
int n;


bool check(double x) {
	memset(seg,0,sizeof 0);
	for (int i = 0; i < n; i++) {
		seg[i][0] = a[i] - b[i] * x;
		seg[i][1] = a[i] + b[i] * x;
	}

	double currl = seg[0][0]; double currr = seg[0][1];
	for (int i = 0; i < n; i++) {
		if (currr < seg[i][0] || currl > seg[i][1]) return false;
		currl = max(currl, seg[i][0]);
		currr = min(currr, seg[i][1]);
	}

	return true;
}


int main()
{
	//cin >> n;
	scanf("%d",&n);
	for (int i = 0; i < n; i++) {
		//cin >> a[i] >> b[i];
		scanf("%d%d",&a[i],&b[i]);
	}

	double l = 0.0, r = 100000.00;
	while (r - l > 1e-7) {
		double mid = (r + l) / 2.0;
		if (check(mid)) {
			r = mid;
		}
		else {
			l = mid;
		}
	}

	printf("%.7f",l);

	return 0;
}

 